var GolfinMyIndex = function() {
    // UI Select 데이터
    this._HTMLDom = null;
};
GolfinMyIndex.prototype = {
    constructor : GolfinMyIndex,
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // InterlockBooking class 에 연동요청
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /**
     *  실시간 예약 완료 건수 요청
     */
    getBookingReservConfirm : function() {
        var thisClass = this;

        var objJson = new MJson();
        var cm = new ConnectionManager();

        $.mobile.showPageLoadingMsg();

        objJson.putClient("userid", document.globalObj.LOGIN_DATA.userId);

        objJson.putPub(MJson.PUB.SID, "US001");
        objJson.putPub(MJson.PUB.SERVICENAME, "getMyBookingAcnt");

        cm.requestGet(objJson.getJsonString(), function($jsonData) {
            var objJson = new MJson();

            // alert("getBookingReservConfirm success :: " + JSON.stringify($jsonData));
            if (objJson.checkResult($jsonData)) {
                var bookingCnt = $jsonData.msp.contents.items;
                if (bookingCnt != undefined) {
                    thisClass.setBookingConfirm(bookingCnt);
                }
            } else {
                console.log("getBookingReservConfirm error");
                console.log($jsonData);
            }

            $.mobile.hidePageLoadingMsg();
        }, function(e) {
            alert("fail :: " + JSON.stringify(e));
            $.mobile.hidePageLoadingMsg();
        });
    },
    /**
     *  자선 예약 완료 건수 요청
     */
    getDonation : function() {
        var thisClass = this;

        var objJson = new MJson();
        var cm = new ConnectionManager();

        $.mobile.showPageLoadingMsg();

        objJson.putClient("userid", document.globalObj.LOGIN_DATA.userId);

        objJson.putPub(MJson.PUB.SID, "DR001");
        objJson.putPub(MJson.PUB.SERVICENAME, "DonationMainReservList");

        cm.requestGet(objJson.getJsonString(), function($jsonData) {
            var objJson = new MJson();

            // alert("getDonation success :: " + JSON.stringify($jsonData));
            if (objJson.checkResult($jsonData)) {
                var bookingCnt = $jsonData.msp.contents["@totalcount"];
                if (bookingCnt != undefined) {
                    thisClass.setBookingWait(bookingCnt);
                }
            } else {
                console.log("getDonation error");
                console.log($jsonData);
            }

            $.mobile.hidePageLoadingMsg();
        }, function(e) {
            alert("fail :: " + JSON.stringify(e));
            $.mobile.hidePageLoadingMsg();
        });
    },
    /**
     *  조인룸 참여 건수 요청
     */
    getJoinRoomAskOk : function() {
        var thisClass = this;

        var objJson = new MJson();
        var cm = new ConnectionManager();

        $.mobile.showPageLoadingMsg();

        objJson.putClient("userid", document.globalObj.LOGIN_DATA.userId);

        objJson.putPub(MJson.PUB.SID, "US001");
        objJson.putPub(MJson.PUB.SERVICENAME, "getMyJoinroomAskOk");

        cm.requestGet(objJson.getJsonString(), function($jsonData) {
            var objJson = new MJson();

            // alert("getJoinRoomAskOk success :: " + JSON.stringify($jsonData));
            if (objJson.checkResult($jsonData)) {
                var roomCnt = $jsonData.msp.contents.items;
                if (roomCnt != undefined) {
                    thisClass.setJoinRoomAskOk(roomCnt);
                }
            } else {
                console.log("getJoinRoomAskOk error");
                console.log($jsonData);
            }

            $.mobile.hidePageLoadingMsg();
        }, function(e) {
            alert("fail :: " + JSON.stringify(e));
            $.mobile.hidePageLoadingMsg();
        });
    },
    /**
     *  조인룸 신청 건수 요청
     */
    getJoinRoomAsk : function() {
        var thisClass = this;

        var objJson = new MJson();
        var cm = new ConnectionManager();

        $.mobile.showPageLoadingMsg();

        objJson.putClient("userid", document.globalObj.LOGIN_DATA.userId);

        objJson.putPub(MJson.PUB.SID, "US001");
        objJson.putPub(MJson.PUB.SERVICENAME, "getMyJoinroomAsk");

        cm.requestGet(objJson.getJsonString(), function($jsonData) {
            var objJson = new MJson();

            // alert("getJoinRoomAsk success :: " + JSON.stringify($jsonData));
            if (objJson.checkResult($jsonData)) {
                var roomCnt = $jsonData.msp.contents.items;
                if (roomCnt != undefined) {
                    thisClass.setJoinRoomAsk(roomCnt);
                }
            } else {
                console.log("getJoinRoomAsk error");
                console.log($jsonData);
            }

            $.mobile.hidePageLoadingMsg();
        }, function(e) {
            alert("fail :: " + JSON.stringify(e));
            $.mobile.hidePageLoadingMsg();
        });
    },
    /**
     * 나의 마일리지 조회
     */
    getMyMileage : function() {
        var thisClass = this;

        var objJson = new MJson();
        var cm = new ConnectionManager();

        $.mobile.showPageLoadingMsg();

        objJson.putClient("userid", document.globalObj.LOGIN_DATA.userId);

        objJson.putPub(MJson.PUB.SID, "US001");
        objJson.putPub(MJson.PUB.SERVICENAME, "getMyPoint");

        cm.requestGet(objJson.getJsonString(), function($jsonData) {
            var objJson = new MJson();

            // alert("getMyMileage success :: " + JSON.stringify($jsonData));
            if (objJson.checkResult($jsonData)) {
                var mileage = $jsonData.msp.contents.items;
                if (mileage != undefined) {
                    thisClass.setMileage(mileage);
                }
            } else {
                console.log("getMyMileage error");
                console.log($jsonData);
            }

            $.mobile.hidePageLoadingMsg();
        }, function(e) {
            alert("fail :: " + JSON.stringify(e));
            $.mobile.hidePageLoadingMsg();
        });
    },
    /**
     *  나의 스코어 평균타수 요청
     */
    getMyScoreAvg : function() {
        var thisClass = this;

        var objJson = new MJson();
        var cm = new ConnectionManager();

        $.mobile.showPageLoadingMsg();

        objJson.putClient("userid", document.globalObj.LOGIN_DATA.userId);

        objJson.putPub(MJson.PUB.SID, "US001");
        objJson.putPub(MJson.PUB.SERVICENAME, "getMyAverageScore");

        cm.requestGet(objJson.getJsonString(), function($jsonData) {
            var objJson = new MJson();

            // alert("getMyScoreAvg success :: " + JSON.stringify($jsonData));
            if (objJson.checkResult($jsonData)) {
                var score = $jsonData.msp.contents.items;
                if (score != undefined) {
                    console.log("score :: " + score);
                    // TODO :: 값을 체크해야 함
                    // thisClass.setJoinRoomAskOk(score);
                }
            } else {
                console.log("getMyScoreAvg error");
                console.log($jsonData);
            }

            $.mobile.hidePageLoadingMsg();
        }, function(e) {
            alert("fail :: " + JSON.stringify(e));
            $.mobile.hidePageLoadingMsg();
        });
    },
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Method
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /**
     * 부킹 예약 - 예약완료 표시
     */
    setBookingConfirm : function($data) {
        var count = $data;
        var layer = this._HTMLDom.booking_info_list;
        var bookingCnt = layer.find('li:eq(1) > em');

        bookingCnt.html($data);
    },
    /**
     * 부킹 예약 - 웨이팅 표시
     */
    setBookingWait : function($data) {
        var count = $data;
        var layer = this._HTMLDom.booking_info_list;
        var bookingCnt = layer.find('li:eq(2) > em');

        bookingCnt.html($data);
    },
    /**
     * 부킹 예약 - 자선예약 표시
     */
    setBookingWait : function($data) {
        var count = $data;
        var layer = this._HTMLDom.booking_info_list;
        var bookingCnt = layer.find('li:eq(3) > em');

        bookingCnt.html($data);
    },
    /**
     * 조인룸 - 참여 표시
     */
    setJoinRoomAskOk : function($data) {
        var count = $data;
        var layer = this._HTMLDom.room_info_list;
        var roomCnt = layer.find('li:eq(1) > em');

        roomCnt.html($data);
    },
    /**
     * 조인룸 - 신청 표시
     */
    setJoinRoomAsk : function($data) {
        var count = $data;
        var layer = this._HTMLDom.room_info_list;
        var roomCnt = layer.find('li:eq(2) > em');

        roomCnt.html($data);
    },
    /**
     * 마일리지 표시
     */
    setMileage : function($mileage) {
        var mileage = $mileage;
        var layer = this._HTMLDom.my_mileage;
        var icon = layer.find("span").clone(true);

        layer.empty();

        layer.append(icon);
        layer.append(" " + mileage + " ");

    },
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Initialize
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    onPageShow : function() {
        console.log("GolfinMyIndex onPageShow");

        var info_list = $('#info_list');

        this._HTMLDom = {
            // 부킹 예약 정보 데이터
            "booking_info_list" : info_list.find('ul:eq(0)'),
            // 조인룸
            "room_info_list" : info_list.find('ul:eq(1)'),
            // 나의 마일리지
            "my_mileage" : info_list.find('ul:eq(2) > li:last'),
            // 나의 스코어
            "my_score" : info_list.find('ul:eq(3) > li:last'),
            // 버튼 그룹
            "btn_group" : info_list.find('ul').find('li:first')
        };

        // 버튼 그룹 이벤트
        var btn_group = this._HTMLDom.btn_group;
        btn_group.find('a').attr("href", "");
        btn_group.click(function($event) {
            var idx = btn_group.index($(this));
            switch(idx) {
                case 0: {
                    // 부킹 예약
                    $.mobile.changePage("../booking/calendar.html");
                    break;
                }
                case 1: {
                    // 조인룸
                    $.mobile.changePage("../room/join_room.html");
                    break;
                }
                case 2: {
                    // 나의 마일리지
                    $.mobile.changePage("../mypage/mileage.html");
                    break;
                }
                case 3: {
                    // 나의 스코어
                    // TODO :: 나의 스코어 셋팅 값 처리해야함
                    $.mobile.changePage("../mypage/my_score.html");
                    break;
                }
            }
        });

        /**
         * 나의 데이터 셋팅
         */
        // 부킹 예약 - 예약 완료
        this.getBookingReservConfirm();
        // 부킹 예약 - 웨이팅
        // TODO :: 웨이팅은 DCD 작업이후 해야 하기에 Hide 처리함
        this._HTMLDom.booking_info_list.eq(0).find('li:eq(2)').hide();
        // 부킹 예약 - 자선예약
        this.getDonation();
        
        // 조인룸 - 참여
        this.getJoinRoomAskOk();
        // 조인룸 - 신청
        this.getJoinRoomAsk();
        
        // 마일리지
        this.getMyMileage();
        
        // 나의 스코어 - 평균타수
        this.getMyScoreAvg();
        
    }
};
